This is an overview of the means and first-order relationships among scales included in Packets 1-3.
These packets included 26 scales or subscales, including the following:
- Absorption (Tellegen); range: 0 to 34
- Absorption extra (a handful of extra questions extra questions); range: 0 to 4
- Daily spiritual experiences #1-14 (Underwood & Teresi); range: 0 to 70
- Daily spiritual experiences #15-16 (Underwood & Teresi); range: 0 to 10
- Spiritual events (Luhrmann); range: 0 to 88
- Sensory seeking (Brown et al.); range: -28 to 28
- Body awareness (Shields et al.); range: -36 to 36
- Attention to feelings (Salovey et al.); range: -42 to 42
- Hallucination (Alderson-Day); range: 0 to 27
- VISQ: dialogic speech (McCarthy-Jones & Fernyhough); range: -8 to 8
- VISQ: inner speech (McCarthy-Jones & Fernyhough); range: -10 to 10
- VISQ: evaluative/motivational speech (McCarthy-Jones & Fernyhough); range: -8 to 8
- Inner speech (Hardy/Bentall); range: -20 to 20
- Hearing events (Posey & Losch); range: 0 to 18
- Encoding style (Lewicki); range: 0 to 40
- Mind metaphors (Van Elk); range: -16 to 16
- Metacognition: lack of cognitive confidence (Wells et al.); range: -12 to 12
- Metacognition: positive beliefs re: worrying (Wells et al.); range: -12 to 12
- Metacognition: cognitive self-consciousness (Wells et al.); range: -12 to 12
- Metacognition: uncontrollability/danger (Wells et al.); range: -12 to 12
- Metacognition: need to control thoughts (Wells et al.); range: -12 to 12
- Dualism: mental states (Weisman); range: 0 to 8
- Dualism: life events (Weisman); range: 0 to 5
- Dualism: inanimate consciousness (Weisman); range: 0 to 6
- Dualism: minds, selves, & world (Weisman); range: 0 to 9
- Dualism: epistemology (Weisman); range: 0 to 5
Means by site
First, let’s compare the mean responses to each subscale across the 5 sites. I’ll plot each subscale in a separate mini-plot (denoted in the title of each mini-plot). The x-axis and color denote the site (US, Ghana, Thailand, China, or Vanuatu). Note the the range y-axis varies between mini-plots. The dot shows what the mean response was for that subscale for that site, and the error bars show a 95% confidence interval for that mean.
Joining, by = c("ctry", "packet", "subscale")

Cluster analysis
… of sites
Now let’s try a formal analysis for determining how similar these 5 sites are to each other.
Hierarchical clustering basically works like this: If there are 5 things - A, B, C, D, and E - this analysis will try to group pairs of like things together. E.g., first it might pair A and D together, then it will pretend that there are just 4 things - AD, B, C, and E. Then it might pair B and C together, and then pretend that there are just 3 things - AD, BC, and E. Then it might pair AD and BC together, and then pretend that there are just 2 things: ADBC and E. It will do this until there is just one “thing” left.
So to read this plot, look for the pairings. Sites that are on the same “branch” in this “dendrogram” showed similar patterns of means on the subscales. The closer together they are on that branch, the more similar they were.

… of subscales
Now let’s do the same thing for the subscales: Which subscales “hang together”?
To read this plot, again, look for the pairings. Subscales that are on the same “branch” in this “dendrogram” showed similar patterns of means across the 5 sites. The closer together they are on that branch, the more similar they were.

Correlations among subscales by individuals
Now let’s take a closer look at which subscales seem to “hang together,” by looking at the correlations between scales across individual particpiants.
It’s important to keep in mind that most people didn’t fill out all 26 subscales. So we’ll focus on just looking at how the subscales within each packet (Packet 1, 2, or 3) “hang together” for the people who completed that packet.
As above, to read these plots, find one scale on the x-axis, and another scale on the y-axis. The value (and color) at that point in the grid shows you the correlation between these two subscale means across the 5 sites. The maximum possible correlation is +1 (red), and the minimum is -1 (blue). (Note that these scales are being presented in alphabetical order, not by any sort of clustering analysis.)
Packet 1
Setting row names on a tibble is deprecated.

Packet 2
Setting row names on a tibble is deprecated.

Packet 3
Setting row names on a tibble is deprecated.

All packets
Just for fun, here’s a look at the correlations among individual participants’ subscale scores across all scales. Note that some of these pairs of subscales probably have very few observations going into these correlations!! So take this with a grain of salt.
Setting row names on a tibble is deprecated.

Correlations among subscales by site
If we were feeling wacky, we could also look at the correlations between scales in their means for each site. This is a totally weird way to look at this, because there are only 5 sites (instead of, e.g., 100 or 200). But just for fun…
To read this plot, find one scale on the x-axis, and another scale on the y-axis. The value (and color) at that point in the grid shows you the correlation between these two subscale means across the 5 sites. The maximum possible correlation is +1 (red), and the minimum is -1 (blue).
I ordered the scales according to the cluster analysis we just did above, so you can see “patches” of scales that all tended to have similar patterns of means across sites.

LS0tCnRpdGxlOiAnUGFja2V0cyAxLTM6IEdlbmVyYWwgZXhwbG9yYXRpb24nCnN1YnRpdGxlOiAnTGFzdCB1cGRhdGVkIDIwMTgtMDQtMDUnCm91dHB1dDoKICBodG1sX25vdGVib29rOiBkZWZhdWx0CiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAogICAgdG9jOiB0cnVlCiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0Ci0tLQoKYGBge3IsIGluY2x1ZGUgPSBGQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9CiMgc2V0IHdvcmtpbmcgZGlyZWN0b3IKIyBzZXR3ZCgiL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcGFja2V0cy9wYWNrZXRzMTIzLyIpCgojIGxvYWQgcGFja2FnZXMKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkocm1zKQpsaWJyYXJ5KGdnZGVuZHJvKQoKIyBsb2FkIHF1ZXN0aW9uIGtleSAoaW5jbHVkaW5nIG1hbnVhbCByZXZlcnNlLWNvZGluZykKcXVlc3Rpb25fa2V5IDwtIHJlYWQuY3N2KCIvL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcGFja2V0cy9wYWNrZXRzMTIzL3BhY2tldHMxMjNfcXVlc3Rpb25fa2V5X2J5aGFuZC5jc3YiKQoKIyBsb2FkIGRhdGEKZF93aWRlIDwtIHJlYWRfY3N2KCIvL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcGFja2V0cy9wYWNrZXRzMTIzL3BhY2tldHMxMjNfZGF0YV9ieXF1ZXN0aW9uX3dpZGUuY3N2IikgJT4lCiAgbXV0YXRlKGN0cnkgPSBmYWN0b3IoY3RyeSwgCiAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygidXMiLCAiZ2hhbmEiLCAidGhhaWxhbmQiLCAiY2hpbmEiLCAidmFudWF0dSIpKSkKZF93aWRlX3N1YnNjYWxlIDwtIHJlYWRfY3N2KCIvL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcGFja2V0cy9wYWNrZXRzMTIzL3BhY2tldHMxMjNfZGF0YV9ieXN1YnNjYWxlX3dpZGUuY3N2IikgJT4lCiAgbXV0YXRlKGN0cnkgPSBmYWN0b3IoY3RyeSwgCiAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygidXMiLCAiZ2hhbmEiLCAidGhhaWxhbmQiLCAiY2hpbmEiLCAidmFudWF0dSIpKSkKZF9sb25nIDwtIHJlYWRfY3N2KCIvL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcGFja2V0cy9wYWNrZXRzMTIzL3BhY2tldHMxMjNfZGF0YV9ieXF1ZXN0aW9uX2xvbmcuY3N2IikgJT4lCiAgbXV0YXRlKGN0cnkgPSBmYWN0b3IoY3RyeSwgCiAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygidXMiLCAiZ2hhbmEiLCAidGhhaWxhbmQiLCAiY2hpbmEiLCAidmFudWF0dSIpKSkKZF9sb25nX3N1YnNjYWxlIDwtIHJlYWRfY3N2KCIvL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL1RlbXBsZXRvbiBHcmFudC9EQVRBIFdSQU5HTElORy90ZW1wbGV0b25fcGFja2V0cy9wYWNrZXRzMTIzL3BhY2tldHMxMjNfZGF0YV9ieXN1YnNjYWxlX2xvbmcuY3N2IikgJT4lCiAgbXV0YXRlKGN0cnkgPSBmYWN0b3IoY3RyeSwgCiAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygidXMiLCAiZ2hhbmEiLCAidGhhaWxhbmQiLCAiY2hpbmEiLCAidmFudWF0dSIpKSkKCiMgbWFrZSBjdXN0b20gZnVuY3Rpb25zCnJvdW5kMiA8LSBmdW5jdGlvbih4KSB7Zm9ybWF0KHJvdW5kKHgsIDIpLCBkaWdpdHMgPSAyKX0KYGBgCgpUaGlzIGlzIGFuIG92ZXJ2aWV3IG9mIHRoZSBtZWFucyBhbmQgZmlyc3Qtb3JkZXIgcmVsYXRpb25zaGlwcyBhbW9uZyBzY2FsZXMgaW5jbHVkZWQgaW4gUGFja2V0cyAxLTMuCgpUaGVzZSBwYWNrZXRzIGluY2x1ZGVkIGByIGxlbmd0aChsZXZlbHMoZmFjdG9yKGRfbG9uZ19zdWJzY2FsZSRzdWJzY2FsZSkpKSAtIDFgIHNjYWxlcyBvciBzdWJzY2FsZXMsIGluY2x1ZGluZyB0aGUgZm9sbG93aW5nOgoKLSAqKkFic29ycHRpb24qKiAoVGVsbGVnZW4pOyByYW5nZTogMCB0byAzNAotICoqQWJzb3JwdGlvbiBleHRyYSoqIChhIGhhbmRmdWwgb2YgZXh0cmEgcXVlc3Rpb25zIGV4dHJhIHF1ZXN0aW9ucyk7IHJhbmdlOiAwIHRvIDQKLSAqKkRhaWx5IHNwaXJpdHVhbCBleHBlcmllbmNlcyAjMS0xNCoqIChVbmRlcndvb2QgJiBUZXJlc2kpOyByYW5nZTogMCB0byA3MAotICoqRGFpbHkgc3Bpcml0dWFsIGV4cGVyaWVuY2VzICMxNS0xNioqIChVbmRlcndvb2QgJiBUZXJlc2kpOyByYW5nZTogMCB0byAxMAotICoqU3Bpcml0dWFsIGV2ZW50cyoqIChMdWhybWFubik7IHJhbmdlOiAwIHRvIDg4Ci0gKipTZW5zb3J5IHNlZWtpbmcqKiAoQnJvd24gZXQgYWwuKTsgcmFuZ2U6IC0yOCB0byAyOAotICoqQm9keSBhd2FyZW5lc3MqKiAoU2hpZWxkcyBldCBhbC4pOyByYW5nZTogLTM2IHRvIDM2Ci0gKipBdHRlbnRpb24gdG8gZmVlbGluZ3MqKiAoU2Fsb3ZleSBldCBhbC4pOyByYW5nZTogLTQyIHRvIDQyCi0gKipIYWxsdWNpbmF0aW9uKiogKEFsZGVyc29uLURheSk7IHJhbmdlOiAwIHRvIDI3Ci0gKipWSVNROiBkaWFsb2dpYyBzcGVlY2gqKiAoTWNDYXJ0aHktSm9uZXMgJiBGZXJueWhvdWdoKTsgcmFuZ2U6IC04IHRvIDgKLSAqKlZJU1E6IGlubmVyIHNwZWVjaCoqIChNY0NhcnRoeS1Kb25lcyAmIEZlcm55aG91Z2gpOyByYW5nZTogLTEwIHRvIDEwCi0gKipWSVNROiBldmFsdWF0aXZlL21vdGl2YXRpb25hbCBzcGVlY2gqKiAoTWNDYXJ0aHktSm9uZXMgJiBGZXJueWhvdWdoKTsgcmFuZ2U6IC04IHRvIDgKLSAqKklubmVyIHNwZWVjaCoqIChIYXJkeS9CZW50YWxsKTsgcmFuZ2U6IC0yMCB0byAyMAotICoqSGVhcmluZyBldmVudHMqKiAoUG9zZXkgJiBMb3NjaCk7IHJhbmdlOiAwIHRvIDE4Ci0gKipFbmNvZGluZyBzdHlsZSoqIChMZXdpY2tpKTsgcmFuZ2U6IDAgdG8gNDAKLSAqKk1pbmQgbWV0YXBob3JzKiogKFZhbiBFbGspOyByYW5nZTogLTE2IHRvIDE2Ci0gKipNZXRhY29nbml0aW9uOiBsYWNrIG9mIGNvZ25pdGl2ZSBjb25maWRlbmNlKiogKFdlbGxzIGV0IGFsLik7IHJhbmdlOiAtMTIgdG8gMTIKLSAqKk1ldGFjb2duaXRpb246IHBvc2l0aXZlIGJlbGllZnMgcmU6IHdvcnJ5aW5nKiogKFdlbGxzIGV0IGFsLik7IHJhbmdlOiAtMTIgdG8gMTIKLSAqKk1ldGFjb2duaXRpb246IGNvZ25pdGl2ZSBzZWxmLWNvbnNjaW91c25lc3MqKiAoV2VsbHMgZXQgYWwuKTsgcmFuZ2U6IC0xMiB0byAxMgotICoqTWV0YWNvZ25pdGlvbjogdW5jb250cm9sbGFiaWxpdHkvZGFuZ2VyKiogKFdlbGxzIGV0IGFsLik7IHJhbmdlOiAtMTIgdG8gMTIKLSAqKk1ldGFjb2duaXRpb246IG5lZWQgdG8gY29udHJvbCB0aG91Z2h0cyoqIChXZWxscyBldCBhbC4pOyByYW5nZTogLTEyIHRvIDEyCi0gKipEdWFsaXNtOiBtZW50YWwgc3RhdGVzKiogKFdlaXNtYW4pOyByYW5nZTogMCB0byA4Ci0gKipEdWFsaXNtOiBsaWZlIGV2ZW50cyoqIChXZWlzbWFuKTsgcmFuZ2U6IDAgdG8gNQotICoqRHVhbGlzbTogaW5hbmltYXRlIGNvbnNjaW91c25lc3MqKiAoV2Vpc21hbik7IHJhbmdlOiAwIHRvIDYKLSAqKkR1YWxpc206IG1pbmRzLCBzZWx2ZXMsICYgd29ybGQqKiAoV2Vpc21hbik7IHJhbmdlOiAwIHRvIDkKLSAqKkR1YWxpc206IGVwaXN0ZW1vbG9neSoqIChXZWlzbWFuKTsgcmFuZ2U6IDAgdG8gNQoKIyBNZWFucyBieSBzaXRlCgpGaXJzdCwgbGV0J3MgY29tcGFyZSB0aGUgbWVhbiByZXNwb25zZXMgdG8gZWFjaCBzdWJzY2FsZSBhY3Jvc3MgdGhlIDUgc2l0ZXMuIEknbGwgcGxvdCBlYWNoIHN1YnNjYWxlIGluIGEgc2VwYXJhdGUgbWluaS1wbG90IChkZW5vdGVkIGluIHRoZSB0aXRsZSBvZiBlYWNoIG1pbmktcGxvdCkuIFRoZSB4LWF4aXMgYW5kIGNvbG9yIGRlbm90ZSB0aGUgc2l0ZSAoVVMsIEdoYW5hLCBUaGFpbGFuZCwgQ2hpbmEsIG9yIFZhbnVhdHUpLiBOb3RlIHRoZSB0aGUgcmFuZ2UgeS1heGlzIHZhcmllcyBiZXR3ZWVuIG1pbmktcGxvdHMuIFRoZSBkb3Qgc2hvd3Mgd2hhdCB0aGUgbWVhbiByZXNwb25zZSB3YXMgZm9yIHRoYXQgc3Vic2NhbGUgZm9yIHRoYXQgc2l0ZSwgYW5kIHRoZSBlcnJvciBiYXJzIHNob3cgYSA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbCBmb3IgdGhhdCBtZWFuLiAKCmBgYHtyfQpkX2xvbmdfc3Vic2NhbGVfYm9vdCA8LSBkX2xvbmdfc3Vic2NhbGUgJT4lCiAgZmlsdGVyKCFpcy5uYShzdW1fc2NvcmUpKSAlPiUKICBncm91cF9ieShjdHJ5LCBwYWNrZXQsIHN1YnNjYWxlKSAlPiUKICBkbyhkYXRhLmZyYW1lKHJiaW5kKHNtZWFuLmNsLmJvb3QoLiRzdW1fc2NvcmUpKSkpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBmaWx0ZXIoc3Vic2NhbGUgIT0gImF0dG4iKSAlPiUKICBsZWZ0X2pvaW4oZF9sb25nX3N1YnNjYWxlICU+JQogICAgICAgICAgICAgIGZpbHRlcighaXMubmEoc3VtX3Njb3JlKSkgJT4lCiAgICAgICAgICAgICAgY291bnQoY3RyeSwgcGFja2V0LCBzdWJzY2FsZSkpICU+JQogIG11dGF0ZShwYWNrZXQgPSBwYXN0ZSgicGFja2V0IiwgcGFja2V0KSwKICAgICAgICAgY3RyeSA9IGZhY3RvcihjdHJ5LAogICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoInVzIiwgImdoYW5hIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhhaWxhbmQiLCAiY2hpbmEiLCAidmFudWF0dSIpKSwKICAgICAgICAgc3Vic2NhbGUgPSAKICAgICAgICAgICBmYWN0b3Ioc3Vic2NhbGUsCiAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImV4d2wiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh3bF9leHRyYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRzZV8wMXRvMTQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHNlXzE1dG8xNiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGV2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbl9zZW5zb3J5X3NlZWtpbmciLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuX2JvZHlfYXdhcmVuZXNzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbl90cmFpdF9tZXRhbW9vZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlcjJfaGFsbHVjaW5hdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9fVklTUV9kaWFsb2dpY19zcGVlY2giLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19WSVNRX2lubmVyX3NwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9fVklTUV9ldmFsX21vdGl2X2lubmVyX3NwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9faGFyZHlfYmVudGFsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlcl9wb3NleV9sb3NjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29fbGV3aWNraSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFfdmFuX2VsayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF9jb25maWRlbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X3Bvc2l0aXZlX2JlbGllZnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfY29nbml0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X3VuY29udHJvbGxhYmlsaXR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X25lZWRfY29udHJvbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfbWVudGFsX3N0YXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfbGlmZV9ldmVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X2luYW5pbWF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfc2VsdmVzX3NvdWxzX3dvcmxkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19lcGlzdGVtaWMiKSwKICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiYWJzb3JwdGlvbiAodGVsbGVnZW4pIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFic29ycHRpb24gKGV4dHJhKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhaWx5IHNwaXJpdHVhbCBleHBlcmllbmNlcyAoIzEtMTQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFpbHkgc3Bpcml0dWFsIGV4cGVyaWVuY2VzICgjMTUtMTYpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Bpcml0dWFsIGV2ZW50cyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zb3J5IHNlZWtpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib2R5IGF3YXJlbmVzcyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRlbnRpb24gdG8gZmVlbGluZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYWxsdWNpbmF0aW9uIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZJU1E6IGRpYWxvZ2ljIHNwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZJU1E6IGlubmVyIHNwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZJU1E6IGV2YWx1YXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbm5lciBzcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFyaW5nIGV2ZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kaW5nIHN0eWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWluZCBtZXRhcGhvcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogbGFjayBvZiBjb2duaXRpdmUgY29uZmlkZW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBwb3NpdGl2ZSBiZWxpZWZzIHJlOiB3b3JyeWluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBjb2duaXRpdmUgc2VsZi1jb25zY2lvdXNuZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IHVuY29udHJvbGxhYmlsaXR5L2RhbmdlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBuZWVkIHRvIGNvbnRyb2wgdGhvdWdodHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBtZW50YWwgc3RhdGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogbGlmZSBldmVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBpbmFuaW1hdGUgY29uc2Npb3VzbmVzcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IG1pbmRzLCBzZWx2ZXMsICYgd29ybGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBlcGlzdGVtb2xvZ3kiKSkpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDUsIGZpZy5hc3AgPSA0fQpnZ3Bsb3QoZF9sb25nX3N1YnNjYWxlX2Jvb3QgJT4lCiAgICAgICAgIG11dGF0ZShzdWJzY2FsZSA9IAogICAgICAgICAgICAgICAgICBmYWN0b3Ioc3Vic2NhbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiYWJzb3JwdGlvblxuKHRlbGxlZ2VuKVxucmFuZ2U6IDAgdG8gMzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYnNvcnB0aW9uXG4oZXh0cmEpXG5yYW5nZTogMCB0byA0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFpbHkgc3Bpcml0dWFsIGV4cGVyaWVuY2VzXG4odW5kZXJ3b29kICYgdGVyZXNpOyAjMS0xNClcbnJhbmdlOiAwIHRvIDcwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFpbHkgc3Bpcml0dWFsIGV4cGVyaWVuY2VzXG4odW5kZXJ3b29kICYgdGVyZXNpOyAjMTUtMTYpXG5yYW5nZTogMCB0byAxMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwaXJpdHVhbCBldmVudHNcbihsdWhybWFubilcbnJhbmdlOiAwIHRvIDg4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc29yeSBzZWVraW5nXG4oYnJvd24gZXQgYWwuKVxucmFuZ2U6IC0yOCB0byAyOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvZHkgYXdhcmVuZXNzXG4oc2hpZWxkcyBldCBhbC4pXG5yYW5nZTogLTM2IHRvIDM2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0ZW50aW9uIHRvIGZlZWxpbmdzXG4oc2Fsb3ZleSBldCBhbC4pXG5yYW5nZTogLTQyIHRvIDQyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFsbHVjaW5hdGlvblxuKGFsZGVyc29uLWRheSlcbnJhbmdlOiAwIHRvIDI3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogZGlhbG9naWMgc3BlZWNoXG4obWNjYXJ0aHktam9uZXMgJiBmZXJueWhvdWdoKVxucmFuZ2U6IC04IHRvIDgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWSVNROiBpbm5lciBzcGVlY2hcbihtY2NhcnRoeS1qb25lcyAmIGZlcm55aG91Z2gpXG5yYW5nZTogLTEwIHRvIDEwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogZXZhbHVhdGl2ZS9tb3RpdmF0aW9uYWwgc3BlZWNoXG4obWNjYXJ0aHktam9uZXMgJiBmZXJueWhvdWdoKVxucmFuZ2U6IC04IHRvIDgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbm5lciBzcGVlY2hcbihoYXJkeS9iZW50YWxsKVxucmFuZ2U6IC0yMCB0byAyMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlYXJpbmcgZXZlbnRzXG4ocG9zZXkgJiBsb3NjaClcbnJhbmdlOiAwIHRvIDE4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2Rpbmcgc3R5bGVcbihsZXdpY2tpKVxucmFuZ2U6IDAgdG8gNDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW5kIG1ldGFwaG9yc1xuKHZhbiBlbGspXG5yYW5nZTogLTE2IHRvIDE2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IGxhY2sgb2YgY29nbml0aXZlIGNvbmZpZGVuY2Vcbih3ZWxscyBldCBhbC4pXG5yYW5nZTogLTEyIHRvIDEyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IHBvc2l0aXZlIGJlbGllZnMgcmU6IHdvcnJ5aW5nXG4od2VsbHMgZXQgYWwuKVxucmFuZ2U6IC0xMiB0byAxMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBjb2duaXRpdmUgc2VsZi1jb25zY2lvdXNuZXNzXG4od2VsbHMgZXQgYWwuKVxucmFuZ2U6IC0xMiB0byAxMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiB1bmNvbnRyb2xsYWJpbGl0eS9kYW5nZXJcbih3ZWxscyBldCBhbC4pXG5yYW5nZTogLTEyIHRvIDEyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IG5lZWQgdG8gY29udHJvbCB0aG91Z2h0c1xuKHdlbGxzIGV0IGFsLilcbnJhbmdlOiAtMTIgdG8gMTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBtZW50YWwgc3RhdGVzXG4od2Vpc21hbilcbnJhbmdlOiAwIHRvIDgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBsaWZlIGV2ZW50c1xuKHdlaXNtYW4pXG5yYW5nZTogMCB0byA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogaW5hbmltYXRlIGNvbnNjaW91c25lc3Ncbih3ZWlzbWFuKVxucmFuZ2U6IDAgdG8gNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IG1pbmRzLCBzZWx2ZXMsICYgd29ybGRcbih3ZWlzbWFuKVxucmFuZ2U6IDAgdG8gOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IGVwaXN0ZW1vbG9neVxuKHdlaXNtYW4pXG5yYW5nZTogMCB0byA1IikpKSAlPiUKICAgICAgICAgIyBmaWx0ZXIoIWdyZXBsKCJ0aGFpIiwgc3Vic2NhbGUpKSAlPiUgIyBnZXQgcmlkIG9mIHRoYWktb25seSBzY2FsZXMKICAgICAgICAgbXV0YXRlKHBhY2tldCA9IGdzdWIoInBhY2tldCAiLCAiUCIsIHBhY2tldCkpLAogICAgICAgYWVzKHggPSBjdHJ5LCB5ID0gTWVhbiwgY29sb3IgPSBjdHJ5KSkgKwogIGZhY2V0X3dyYXAofiByZW9yZGVyKGludGVyYWN0aW9uKHBhY2tldCwgc3Vic2NhbGUsIHNlcCA9ICI6ICIpLAogICAgICAgICAgICAgICAgICAgICAgIGFzLm51bWVyaWMoZmFjdG9yKHBhY2tldCkpKSwKICAgICAgICAgICAgIG5jb2wgPSAzLCBzY2FsZXMgPSAiZnJlZSIpICsKICBnZW9tX3BvaW50cmFuZ2UoYWVzKHltaW4gPSBMb3dlciwgeW1heCA9IFVwcGVyKSkgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAoIihuPSIsIG4sICIpIiksIHkgPSBMb3dlciksIAogICAgICAgICAgICBzaXplID0gMiwgbnVkZ2VfeCA9IDAuMTUsIGhqdXN0ID0gMCkgKwogIHNjYWxlX3hfZGlzY3JldGUoZXhwYW5kID0gYygwLCAxKSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAidG9wIikgKwogIGxhYnModGl0bGUgPSAibWVhbiBzdWJzY2FsZSBzY29yZXMgYnkgc2l0ZSIsCiAgICAgICBzdWJ0aXRsZSA9ICJvcmRlcmVkIGJ5IHBhY2tldCAoUDEsIFAyLCBQMylcbmVycm9yIGJhcnMgYXJlIGJvb3RzdHJhcHBlZCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMiLAogICAgICAgeCA9ICJzaXRlIiwgY29sb3IgPSAic2l0ZSIsCiAgICAgICB5ID0gIm1lYW4gc3Vic2NhbGUgc2NvcmUgKHJhbmdlIHZhcmllcyBieSBzdWJzY2FsZSkiKQpgYGAKCiMgQ2x1c3RlciBhbmFseXNpcwoKYGBge3J9CmNvcl9ieV9zaXRlIDwtIGRfbG9uZ19zdWJzY2FsZV9ib290ICU+JQogIGZpbHRlcighZ3JlcGwoInRoYWkiLCBzdWJzY2FsZSkpICU+JSAKICBtdXRhdGUoc3Vic2NhbGUgPSBpZmVsc2Uoc3Vic2NhbGUgPT0gImlubmVyIHNwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlKGFzLmNoYXJhY3RlcihzdWJzY2FsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzdWIoInBhY2tldCAiLCAicCIsIHBhY2tldCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcCA9ICJfIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzLmNoYXJhY3RlcihzdWJzY2FsZSkpKSAlPiUKICBkaXN0aW5jdChjdHJ5LCBzdWJzY2FsZSwgTWVhbikgJT4lCiAgZmlsdGVyKHN1YnNjYWxlICE9ICJpbm5lciB2b2ljZSIpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBzcHJlYWQoc3Vic2NhbGUsIE1lYW4pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICBjb2x1bW5fdG9fcm93bmFtZXMoImN0cnkiKQpgYGAKCiMjIC4uLiBvZiBzaXRlcwoKTm93IGxldCdzIHRyeSBhIGZvcm1hbCBhbmFseXNpcyBmb3IgZGV0ZXJtaW5pbmcgaG93IHNpbWlsYXIgdGhlc2UgNSBzaXRlcyBhcmUgdG8gZWFjaCBvdGhlci4gCgpIaWVyYXJjaGljYWwgY2x1c3RlcmluZyBiYXNpY2FsbHkgd29ya3MgbGlrZSB0aGlzOiBJZiB0aGVyZSBhcmUgNSB0aGluZ3MgLSBBLCBCLCBDLCBELCBhbmQgRSAtIHRoaXMgYW5hbHlzaXMgd2lsbCB0cnkgdG8gZ3JvdXAgcGFpcnMgb2YgbGlrZSB0aGluZ3MgdG9nZXRoZXIuIEUuZy4sIGZpcnN0IGl0IG1pZ2h0IHBhaXIgQSBhbmQgRCB0b2dldGhlciwgdGhlbiBpdCB3aWxsIHByZXRlbmQgdGhhdCB0aGVyZSBhcmUganVzdCA0IHRoaW5ncyAtIEFELCBCLCBDLCBhbmQgRS4gVGhlbiBpdCBtaWdodCBwYWlyIEIgYW5kIEMgdG9nZXRoZXIsIGFuZCB0aGVuIHByZXRlbmQgdGhhdCB0aGVyZSBhcmUganVzdCAzIHRoaW5ncyAtIEFELCBCQywgYW5kIEUuIFRoZW4gaXQgbWlnaHQgcGFpciBBRCBhbmQgQkMgdG9nZXRoZXIsIGFuZCB0aGVuIHByZXRlbmQgdGhhdCB0aGVyZSBhcmUganVzdCAyIHRoaW5nczogQURCQyBhbmQgRS4gSXQgd2lsbCBkbyB0aGlzIHVudGlsIHRoZXJlIGlzIGp1c3Qgb25lICJ0aGluZyIgbGVmdC4KClNvIHRvIHJlYWQgdGhpcyBwbG90LCBsb29rIGZvciB0aGUgcGFpcmluZ3MuIFNpdGVzIHRoYXQgYXJlIG9uIHRoZSBzYW1lICJicmFuY2giIGluIHRoaXMgImRlbmRyb2dyYW0iIHNob3dlZCBzaW1pbGFyIHBhdHRlcm5zIG9mIG1lYW5zIG9uIHRoZSBzdWJzY2FsZXMuIFRoZSBjbG9zZXIgdG9nZXRoZXIgdGhleSBhcmUgb24gdGhhdCBicmFuY2gsIHRoZSBtb3JlIHNpbWlsYXIgdGhleSB3ZXJlLgoKYGBge3IsIGZpZy53aWR0aCA9IDIsIGZpZy5hc3AgPSAwLjZ9CmNsdXN0X3NpdGVzIDwtIGhjbHVzdChkaXN0KGNvcl9ieV9zaXRlKSkKZ2dkZW5kcm9ncmFtKGNsdXN0X3NpdGVzKSArCiAgbGFicyh0aXRsZSA9ICJoaWVyYXJjaGljYWwgY2x1c3RlcmluZyBvZiBzaXRlcyIsCiAgICAgICBzdWJ0aXRsZSA9ICJ1c2luZyBtZWFuIHN1YnNjYWxlIHNjb3JlcyBieSBzaXRlIikKYGBgCgojIyAuLi4gb2Ygc3Vic2NhbGVzCgpOb3cgbGV0J3MgZG8gdGhlIHNhbWUgdGhpbmcgZm9yIHRoZSBzdWJzY2FsZXM6IFdoaWNoIHN1YnNjYWxlcyAiaGFuZyB0b2dldGhlciI/IAoKVG8gcmVhZCB0aGlzIHBsb3QsIGFnYWluLCBsb29rIGZvciB0aGUgcGFpcmluZ3MuIFN1YnNjYWxlcyB0aGF0IGFyZSBvbiB0aGUgc2FtZSAiYnJhbmNoIiBpbiB0aGlzICJkZW5kcm9ncmFtIiBzaG93ZWQgc2ltaWxhciBwYXR0ZXJucyBvZiBtZWFucyBhY3Jvc3MgdGhlIDUgc2l0ZXMuIFRoZSBjbG9zZXIgdG9nZXRoZXIgdGhleSBhcmUgb24gdGhhdCBicmFuY2gsIHRoZSBtb3JlIHNpbWlsYXIgdGhleSB3ZXJlLgoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjZ9CmNsdXN0X3N1YnNjYWxlcyA8LSBoY2x1c3QoZGlzdCh0KGNvcl9ieV9zaXRlKSkpCmdnZGVuZHJvZ3JhbShjbHVzdF9zdWJzY2FsZXMpICsKICBsYWJzKHRpdGxlID0gImhpZXJhcmNoaWNhbCBjbHVzdGVyIG9mIHN1YnNjYWxlcyIsCiAgICAgICBzdWJ0aXRsZSA9ICJ1c2luZyBtZWFuIHN1YnNjYWxlIHNjb3JlcyBieSBzaXRlIikKYGBgCgojIENvcnJlbGF0aW9ucyBhbW9uZyBzdWJzY2FsZXMgYnkgaW5kaXZpZHVhbHMKCk5vdyBsZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgd2hpY2ggc3Vic2NhbGVzIHNlZW0gdG8gImhhbmcgdG9nZXRoZXIsIiBieSBsb29raW5nIGF0IHRoZSBjb3JyZWxhdGlvbnMgYmV0d2VlbiBzY2FsZXMgYWNyb3NzIGluZGl2aWR1YWwgcGFydGljcGlhbnRzLiAKCkl0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCB0aGF0IG1vc3QgcGVvcGxlIGRpZG4ndCBmaWxsIG91dCBhbGwgYHIgbGVuZ3RoKGxldmVscyhmYWN0b3IoZF9sb25nX3N1YnNjYWxlJHN1YnNjYWxlKSkpIC0gMWAgc3Vic2NhbGVzLiBTbyB3ZSdsbCBmb2N1cyBvbiBqdXN0IGxvb2tpbmcgYXQgaG93IHRoZSBzdWJzY2FsZXMgd2l0aGluIGVhY2ggcGFja2V0IChQYWNrZXQgMSwgMiwgb3IgMykgImhhbmcgdG9nZXRoZXIiIGZvciB0aGUgcGVvcGxlIHdobyBjb21wbGV0ZWQgdGhhdCBwYWNrZXQuCgpBcyBhYm92ZSwgdG8gcmVhZCB0aGVzZSBwbG90cywgZmluZCBvbmUgc2NhbGUgb24gdGhlIHgtYXhpcywgYW5kIGFub3RoZXIgc2NhbGUgb24gdGhlIHktYXhpcy4gVGhlIHZhbHVlIChhbmQgY29sb3IpIGF0IHRoYXQgcG9pbnQgaW4gdGhlIGdyaWQgc2hvd3MgeW91IHRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZXNlIHR3byBzdWJzY2FsZSBtZWFucyBhY3Jvc3MgdGhlIDUgc2l0ZXMuIFRoZSBtYXhpbXVtIHBvc3NpYmxlIGNvcnJlbGF0aW9uIGlzICsxIChyZWQpLCBhbmQgdGhlIG1pbmltdW0gaXMgLTEgKGJsdWUpLiAoTm90ZSB0aGF0IHRoZXNlIHNjYWxlcyBhcmUgYmVpbmcgcHJlc2VudGVkIGluIGFscGhhYmV0aWNhbCBvcmRlciwgKm5vdCogYnkgYW55IHNvcnQgb2YgY2x1c3RlcmluZyBhbmFseXNpcy4pCgojIyBQYWNrZXQgMQoKYGBge3IgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CmRfbG9uZ19zdWJzY2FsZSAlPiUKICBmaWx0ZXIocGFja2V0ID09IDEsICFpcy5uYShzdW1fc2NvcmUpKSAlPiUKICBtdXRhdGUoc3Vic2NhbGUgPSAKICAgICAgICAgICBmYWN0b3Ioc3Vic2NhbGUsCiAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImV4d2wiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh3bF9leHRyYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRzZV8wMXRvMTQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHNlXzE1dG8xNiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGV2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbl9zZW5zb3J5X3NlZWtpbmciLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuX2JvZHlfYXdhcmVuZXNzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbl90cmFpdF9tZXRhbW9vZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlcjJfaGFsbHVjaW5hdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9fVklTUV9kaWFsb2dpY19zcGVlY2giLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19WSVNRX2lubmVyX3NwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9fVklTUV9ldmFsX21vdGl2X2lubmVyX3NwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9faGFyZHlfYmVudGFsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlcl9wb3NleV9sb3NjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29fbGV3aWNraSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFfdmFuX2VsayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF9jb25maWRlbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X3Bvc2l0aXZlX2JlbGllZnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfY29nbml0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X3VuY29udHJvbGxhYmlsaXR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X25lZWRfY29udHJvbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfbWVudGFsX3N0YXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfbGlmZV9ldmVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X2luYW5pbWF0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfc2VsdmVzX3NvdWxzX3dvcmxkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19lcGlzdGVtaWMiKSwKICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiYWJzb3JwdGlvbiAodGVsbGVnZW4pIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFic29ycHRpb24gKGV4dHJhKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhaWx5IHNwaXJpdHVhbCBleHBlcmllbmNlcyAoIzEtMTQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFpbHkgc3Bpcml0dWFsIGV4cGVyaWVuY2VzICgjMTUtMTYpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Bpcml0dWFsIGV2ZW50cyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5zb3J5IHNlZWtpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib2R5IGF3YXJlbmVzcyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRlbnRpb24gdG8gZmVlbGluZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYWxsdWNpbmF0aW9uIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZJU1E6IGRpYWxvZ2ljIHNwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZJU1E6IGlubmVyIHNwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZJU1E6IGV2YWx1YXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbm5lciBzcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFyaW5nIGV2ZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kaW5nIHN0eWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWluZCBtZXRhcGhvcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogbGFjayBvZiBjb2duaXRpdmUgY29uZmlkZW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBwb3NpdGl2ZSBiZWxpZWZzIHJlOiB3b3JyeWluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBjb2duaXRpdmUgc2VsZi1jb25zY2lvdXNuZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IHVuY29udHJvbGxhYmlsaXR5L2RhbmdlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBuZWVkIHRvIGNvbnRyb2wgdGhvdWdodHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBtZW50YWwgc3RhdGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogbGlmZSBldmVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBpbmFuaW1hdGUgY29uc2Npb3VzbmVzcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IG1pbmRzLCBzZWx2ZXMsICYgd29ybGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBlcGlzdGVtb2xvZ3kiKSkpICU+JQogIGZpbHRlcighaXMubmEoc3Vic2NhbGUpKSAlPiUKICBzcHJlYWQoc3Vic2NhbGUsIHN1bV9zY29yZSkgJT4lCiAgc2VsZWN0KC1jKGN0cnksIHdoZXIsIHJlY3IsIHdob2MpKSAlPiUKICBtdXRhdGUoc3ViaiA9IHBhc3RlKHN1YmosIHBhY2tldCwgdmVyc2lvbiwgc2VwID0gIl8iKSkgJT4lCiAgc2VsZWN0KC1wYWNrZXQsIC12ZXJzaW9uKSAlPiUKICBkaXN0aW5jdCgpICU+JQogIHJlbW92ZV9yb3duYW1lcygpICU+JQogIGNvbHVtbl90b19yb3duYW1lcygic3ViaiIpICU+JQogIGNvcih1c2UgPSAicGFpcndpc2UuY29tcGxldGUub2JzIikgJT4lCiAgIyBjb3JycGxvdCB2ZXJzaW9uOgogICMgY29ycnBsb3Q6OmNvcnJwbG90KG1ldGhvZCA9ICJjb2xvciIsIHRsLmNvbCA9ICJibGFjayIsCiAgIyAgICAgICAgICAgICAgICAgICAgYWRkQ29lZi5jb2wgPSAiYmxhY2siLCBvcmRlciA9ICJoY2x1c3QiLAogICMgICAgICAgICAgICAgICAgICAgIGNvbCA9IFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbChuID0gMTEsIG5hbWUgPSAiUFJHbiIpLAogICMgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIlxuUEFDS0VUIDE6IGNvcnJlbGF0aW9ucyBhbW9uZyBzdWJzY2FsZXMiKQoKICAjIGdncGxvdCB2ZXJzaW9uOgogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInN1YnNjYWxlQSIpICU+JQogIGdhdGhlcihzdWJzY2FsZUIsIGNvciwgLXN1YnNjYWxlQSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc3Vic2NhbGVBLCB5ID0gc3Vic2NhbGVCLCBmaWxsID0gY29yLCBsYWJlbCA9IHJvdW5kMihjb3IpKSkgKwogIGdlb21fdGlsZSgpICsKICBnZW9tX3RleHQoc2l6ZSA9IDMpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcihndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDYpLAogICAgICAgICAgICAgICAgICAgICAgIHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIlBBQ0tFVCAxOiBjb3JyZWxhdGlvbnMgYW1vbmcgc3Vic2NhbGVzIiwKICAgICAgIHN1YnRpdGxlID0gInVzaW5nIHBhaXJ3aXNlIGNvbXBsZXRlIG9ic2VydmF0aW9ucyIsCiAgICAgICB4ID0gIiIsCiAgICAgICB5ID0gIiIpCmBgYAoKIyMgUGFja2V0IDIKCmBgYHtyIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpkX2xvbmdfc3Vic2NhbGUgJT4lCiAgZmlsdGVyKHBhY2tldCA9PSAyLCAhaXMubmEoc3VtX3Njb3JlKSkgJT4lCiAgbXV0YXRlKHN1YnNjYWxlID0gCiAgICAgICAgICAgZmFjdG9yKHN1YnNjYWxlLAogICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJleHdsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4d2xfZXh0cmEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkc2VfMDF0bzE0IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRzZV8xNXRvMTYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BldiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5fc2Vuc29yeV9zZWVraW5nIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbl9ib2R5X2F3YXJlbmVzcyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5fdHJhaXRfbWV0YW1vb2QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZXIyX2hhbGx1Y2luYXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvX1ZJU1FfZGlhbG9naWNfc3BlZWNoIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9fVklTUV9pbm5lcl9zcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvX1ZJU1FfZXZhbF9tb3Rpdl9pbm5lcl9zcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvX2hhcmR5X2JlbnRhbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZXJfcG9zZXlfbG9zY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvX2xld2lja2kiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhX3Zhbl9lbGsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfY29uZmlkZW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF9wb3NpdGl2ZV9iZWxpZWZzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X2NvZ25pdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF91bmNvbnRyb2xsYWJpbGl0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF9uZWVkX2NvbnRyb2wiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X21lbnRhbF9zdGF0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X2xpZmVfZXZlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19pbmFuaW1hdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X3NlbHZlc19zb3Vsc193b3JsZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfZXBpc3RlbWljIiksCiAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoImFic29ycHRpb24gKHRlbGxlZ2VuKSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYnNvcnB0aW9uIChleHRyYSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYWlseSBzcGlyaXR1YWwgZXhwZXJpZW5jZXMgKCMxLTE0KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhaWx5IHNwaXJpdHVhbCBleHBlcmllbmNlcyAoIzE1LTE2KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwaXJpdHVhbCBldmVudHMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vuc29yeSBzZWVraW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYm9keSBhd2FyZW5lc3MiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0ZW50aW9uIHRvIGZlZWxpbmdzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFsbHVjaW5hdGlvbiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWSVNROiBkaWFsb2dpYyBzcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWSVNROiBpbm5lciBzcGVlY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWSVNROiBldmFsdWF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5uZXIgc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVhcmluZyBldmVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGluZyBzdHlsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbmQgbWV0YXBob3JzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IGxhY2sgb2YgY29nbml0aXZlIGNvbmZpZGVuY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogcG9zaXRpdmUgYmVsaWVmcyByZTogd29ycnlpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogY29nbml0aXZlIHNlbGYtY29uc2Npb3VzbmVzcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiB1bmNvbnRyb2xsYWJpbGl0eS9kYW5nZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogbmVlZCB0byBjb250cm9sIHRob3VnaHRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogbWVudGFsIHN0YXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IGxpZmUgZXZlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogaW5hbmltYXRlIGNvbnNjaW91c25lc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBtaW5kcywgc2VsdmVzLCAmIHdvcmxkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogZXBpc3RlbW9sb2d5IikpKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHN1YnNjYWxlKSkgJT4lCiAgc2VsZWN0KC1jKGN0cnksIHdoZXIsIHJlY3IsIHdob2MpKSAlPiUKICBzcHJlYWQoc3Vic2NhbGUsIHN1bV9zY29yZSkgJT4lCiAgbXV0YXRlKHN1YmogPSBwYXN0ZShzdWJqLCBwYWNrZXQsIHZlcnNpb24sIHNlcCA9ICJfIikpICU+JQogIHNlbGVjdCgtcGFja2V0LCAtdmVyc2lvbikgJT4lCiAgZGlzdGluY3QoKSAlPiUKICByZW1vdmVfcm93bmFtZXMoKSAlPiUKICBjb2x1bW5fdG9fcm93bmFtZXMoInN1YmoiKSAlPiUKICBjb3IodXNlID0gInBhaXJ3aXNlLmNvbXBsZXRlLm9icyIpICU+JQogICMgY29ycnBsb3QgdmVyc2lvbjoKICAjIGNvcnJwbG90Ojpjb3JycGxvdChtZXRob2QgPSAiY29sb3IiLCB0bC5jb2wgPSAiYmxhY2siLAogICMgICAgICAgICAgICAgICAgICAgIGFkZENvZWYuY29sID0gImJsYWNrIiwgb3JkZXIgPSAiaGNsdXN0IiwKICAjICAgICAgICAgICAgICAgICAgICBjb2wgPSBSQ29sb3JCcmV3ZXI6OmJyZXdlci5wYWwobiA9IDExLCBuYW1lID0gIlBSR24iKSwKICAjICAgICAgICAgICAgICAgICAgICB0aXRsZSA9ICJcblBBQ0tFVCAyOiBjb3JyZWxhdGlvbnMgYW1vbmcgc3Vic2NhbGVzIikKCiAgIyBnZ3Bsb3QgdmVyc2lvbjoKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJzY2FsZUEiKSAlPiUKICBnYXRoZXIoc3Vic2NhbGVCLCBjb3IsIC1zdWJzY2FsZUEpICU+JQogIGdncGxvdChhZXMoeCA9IHN1YnNjYWxlQSwgeSA9IHN1YnNjYWxlQiwgZmlsbCA9IGNvciwgbGFiZWwgPSByb3VuZDIoY29yKSkpICsKICBnZW9tX3RpbGUoKSArCiAgZ2VvbV90ZXh0KHNpemUgPSAzKSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIoZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSA2KSwKICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICJQQUNLRVQgMjogY29ycmVsYXRpb25zIGFtb25nIHN1YnNjYWxlcyIsCiAgICAgICBzdWJ0aXRsZSA9ICJ1c2luZyBwYWlyd2lzZSBjb21wbGV0ZSBvYnNlcnZhdGlvbnMiLAogICAgICAgeCA9ICIiLAogICAgICAgeSA9ICIiKQpgYGAKCiMjIFBhY2tldCAzCgpgYGB7ciBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KZF9sb25nX3N1YnNjYWxlICU+JQogIGZpbHRlcihwYWNrZXQgPT0gMywgIWlzLm5hKHN1bV9zY29yZSkpICU+JQogIG11dGF0ZShzdWJzY2FsZSA9IAogICAgICAgICAgIGZhY3RvcihzdWJzY2FsZSwKICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiZXh3bCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHdsX2V4dHJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHNlXzAxdG8xNCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkc2VfMTV0bzE2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZXYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuX3NlbnNvcnlfc2Vla2luZyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5fYm9keV9hd2FyZW5lc3MiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuX3RyYWl0X21ldGFtb29kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVyMl9oYWxsdWNpbmF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19WSVNRX2RpYWxvZ2ljX3NwZWVjaCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvX1ZJU1FfaW5uZXJfc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19WSVNRX2V2YWxfbW90aXZfaW5uZXJfc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19oYXJkeV9iZW50YWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVyX3Bvc2V5X2xvc2NoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb19sZXdpY2tpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YV92YW5fZWxrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X2NvbmZpZGVuY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfcG9zaXRpdmVfYmVsaWVmcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF9jb2duaXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfdW5jb250cm9sbGFiaWxpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfbmVlZF9jb250cm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19tZW50YWxfc3RhdGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19saWZlX2V2ZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfaW5hbmltYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19zZWx2ZXNfc291bHNfd29ybGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X2VwaXN0ZW1pYyIpLAogICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJhYnNvcnB0aW9uICh0ZWxsZWdlbikiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJzb3JwdGlvbiAoZXh0cmEpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFpbHkgc3Bpcml0dWFsIGV4cGVyaWVuY2VzICgjMS0xNCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYWlseSBzcGlyaXR1YWwgZXhwZXJpZW5jZXMgKCMxNS0xNikiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGlyaXR1YWwgZXZlbnRzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNvcnkgc2Vla2luZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvZHkgYXdhcmVuZXNzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dGVudGlvbiB0byBmZWVsaW5ncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhbGx1Y2luYXRpb24iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogZGlhbG9naWMgc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogaW5uZXIgc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogZXZhbHVhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlubmVyIHNwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlYXJpbmcgZXZlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2Rpbmcgc3R5bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW5kIG1ldGFwaG9ycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBsYWNrIG9mIGNvZ25pdGl2ZSBjb25maWRlbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IHBvc2l0aXZlIGJlbGllZnMgcmU6IHdvcnJ5aW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IGNvZ25pdGl2ZSBzZWxmLWNvbnNjaW91c25lc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogdW5jb250cm9sbGFiaWxpdHkvZGFuZ2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IG5lZWQgdG8gY29udHJvbCB0aG91Z2h0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IG1lbnRhbCBzdGF0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBsaWZlIGV2ZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IGluYW5pbWF0ZSBjb25zY2lvdXNuZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogbWluZHMsIHNlbHZlcywgJiB3b3JsZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IGVwaXN0ZW1vbG9neSIpKSkgJT4lCiAgZmlsdGVyKCFpcy5uYShzdWJzY2FsZSkpICU+JQogIHNwcmVhZChzdWJzY2FsZSwgc3VtX3Njb3JlKSAlPiUKICBzZWxlY3QoLWMoY3RyeSwgd2hlciwgcmVjciwgd2hvYykpICU+JQogIG11dGF0ZShzdWJqID0gcGFzdGUoc3ViaiwgcGFja2V0LCB2ZXJzaW9uLCBzZXAgPSAiXyIpKSAlPiUKICBzZWxlY3QoLXBhY2tldCwgLXZlcnNpb24pICU+JQogIGRpc3RpbmN0KCkgJT4lCiAgcmVtb3ZlX3Jvd25hbWVzKCkgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJzdWJqIikgJT4lCiAgY29yKHVzZSA9ICJwYWlyd2lzZS5jb21wbGV0ZS5vYnMiKSAlPiUKICAjIGNvcnJwbG90IHZlcnNpb246CiAgIyBjb3JycGxvdDo6Y29ycnBsb3QobWV0aG9kID0gImNvbG9yIiwgdGwuY29sID0gImJsYWNrIiwKICAjICAgICAgICAgICAgICAgICAgICBhZGRDb2VmLmNvbCA9ICJibGFjayIsIG9yZGVyID0gImhjbHVzdCIsCiAgIyAgICAgICAgICAgICAgICAgICAgY29sID0gUkNvbG9yQnJld2VyOjpicmV3ZXIucGFsKG4gPSAxMSwgbmFtZSA9ICJQUkduIiksCiAgIyAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiXG5QQUNLRVQgMzogY29ycmVsYXRpb25zIGFtb25nIHN1YnNjYWxlcyIpCgogICMgZ2dwbG90IHZlcnNpb246CiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigic3Vic2NhbGVBIikgJT4lCiAgZ2F0aGVyKHN1YnNjYWxlQiwgY29yLCAtc3Vic2NhbGVBKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzdWJzY2FsZUEsIHkgPSBzdWJzY2FsZUIsIGZpbGwgPSBjb3IsIGxhYmVsID0gcm91bmQyKGNvcikpKSArCiAgZ2VvbV90aWxlKCkgKwogIGdlb21fdGV4dChzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKGd1aWRlID0gZ3VpZGVfY29sb3JiYXIoYmFyaGVpZ2h0ID0gNiksCiAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxKSkgKwogIGxhYnModGl0bGUgPSAiUEFDS0VUIDM6IGNvcnJlbGF0aW9ucyBhbW9uZyBzdWJzY2FsZXMiLAogICAgICAgc3VidGl0bGUgPSAidXNpbmcgcGFpcndpc2UgY29tcGxldGUgb2JzZXJ2YXRpb25zIiwKICAgICAgIHggPSAiIiwKICAgICAgIHkgPSAiIikKYGBgCgojIyBBbGwgcGFja2V0cwoKSnVzdCBmb3IgZnVuLCBoZXJlJ3MgYSBsb29rIGF0IHRoZSBjb3JyZWxhdGlvbnMgYW1vbmcgaW5kaXZpZHVhbCBwYXJ0aWNpcGFudHMnIHN1YnNjYWxlIHNjb3JlcyBhY3Jvc3MgYWxsIHNjYWxlcy4gKipOb3RlIHRoYXQgc29tZSBvZiB0aGVzZSBwYWlycyBvZiBzdWJzY2FsZXMgcHJvYmFibHkgaGF2ZSB2ZXJ5IGZldyBvYnNlcnZhdGlvbnMgZ29pbmcgaW50byB0aGVzZSBjb3JyZWxhdGlvbnMhISBTbyB0YWtlIHRoaXMgd2l0aCBhIGdyYWluIG9mIHNhbHQuKioKCmBgYHtyLCBmaWcud2lkdGggPSA2LCBmaWcuYXNwID0gMX0KZF9sb25nX3N1YnNjYWxlICU+JQogIG11dGF0ZShzdWJzY2FsZSA9IAogICAgICAgICAgIGZhY3RvcihzdWJzY2FsZSwKICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiZXh3bCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHdsX2V4dHJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHNlXzAxdG8xNCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkc2VfMTV0bzE2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZXYiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuX3NlbnNvcnlfc2Vla2luZyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5fYm9keV9hd2FyZW5lc3MiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuX3RyYWl0X21ldGFtb29kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVyMl9oYWxsdWNpbmF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19WSVNRX2RpYWxvZ2ljX3NwZWVjaCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZvX1ZJU1FfaW5uZXJfc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19WSVNRX2V2YWxfbW90aXZfaW5uZXJfc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52b19oYXJkeV9iZW50YWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVyX3Bvc2V5X2xvc2NoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb19sZXdpY2tpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YV92YW5fZWxrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGF0X2NvbmZpZGVuY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfcG9zaXRpdmVfYmVsaWVmcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhdF9jb2duaXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfdW5jb250cm9sbGFiaWxpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXRfbmVlZF9jb250cm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19tZW50YWxfc3RhdGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19saWZlX2V2ZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbndfaW5hbmltYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlud19zZWx2ZXNfc291bHNfd29ybGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW53X2VwaXN0ZW1pYyIpLAogICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJhYnNvcnB0aW9uICh0ZWxsZWdlbikiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJzb3JwdGlvbiAoZXh0cmEpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFpbHkgc3Bpcml0dWFsIGV4cGVyaWVuY2VzICgjMS0xNCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYWlseSBzcGlyaXR1YWwgZXhwZXJpZW5jZXMgKCMxNS0xNikiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGlyaXR1YWwgZXZlbnRzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbnNvcnkgc2Vla2luZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvZHkgYXdhcmVuZXNzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dGVudGlvbiB0byBmZWVsaW5ncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhbGx1Y2luYXRpb24iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogZGlhbG9naWMgc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogaW5uZXIgc3BlZWNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVklTUTogZXZhbHVhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlubmVyIHNwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlYXJpbmcgZXZlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2Rpbmcgc3R5bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW5kIG1ldGFwaG9ycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGFjb2cuOiBsYWNrIG9mIGNvZ25pdGl2ZSBjb25maWRlbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IHBvc2l0aXZlIGJlbGllZnMgcmU6IHdvcnJ5aW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IGNvZ25pdGl2ZSBzZWxmLWNvbnNjaW91c25lc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhY29nLjogdW5jb250cm9sbGFiaWxpdHkvZGFuZ2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0YWNvZy46IG5lZWQgdG8gY29udHJvbCB0aG91Z2h0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IG1lbnRhbCBzdGF0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdWFsaXNtOiBsaWZlIGV2ZW50cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IGluYW5pbWF0ZSBjb25zY2lvdXNuZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVhbGlzbTogbWluZHMsIHNlbHZlcywgJiB3b3JsZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR1YWxpc206IGVwaXN0ZW1vbG9neSIpKSkgJT4lCiAgZmlsdGVyKCFpcy5uYShzdWJzY2FsZSkpICU+JQogIHNwcmVhZChzdWJzY2FsZSwgc3VtX3Njb3JlKSAlPiUKICBzZWxlY3QoLWMoY3RyeSwgd2hlciwgcmVjciwgd2hvYykpICU+JQogIG11dGF0ZShzdWJqID0gcGFzdGUoc3ViaiwgcGFja2V0LCB2ZXJzaW9uLCBzZXAgPSAiXyIpKSAlPiUKICBzZWxlY3QoLXBhY2tldCwgLXZlcnNpb24pICU+JQogIGRpc3RpbmN0KCkgJT4lCiAgcmVtb3ZlX3Jvd25hbWVzKCkgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJzdWJqIikgJT4lCiAgY29yKHVzZSA9ICJwYWlyd2lzZS5jb21wbGV0ZS5vYnMiKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJzY2FsZUEiKSAlPiUKICBnYXRoZXIoc3Vic2NhbGVCLCBjb3IsIC1zdWJzY2FsZUEpICU+JQogIGdncGxvdChhZXMoeCA9IHN1YnNjYWxlQSwgeSA9IHN1YnNjYWxlQiwgZmlsbCA9IGNvciwgbGFiZWwgPSByb3VuZDIoY29yKSkpICsKICBnZW9tX3RpbGUoKSArCiAgZ2VvbV90ZXh0KHNpemUgPSAzKSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIoZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSA2KSwKICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICJQQUNLRVRTIDEtMzogY29ycmVsYXRpb25zIGFtb25nIHN1YnNjYWxlcyIsCiAgICAgICBzdWJ0aXRsZSA9ICJ1c2luZyBwYWlyd2lzZSBjb21wbGV0ZSBvYnNlcnZhdGlvbnMiLAogICAgICAgeCA9ICIiLAogICAgICAgeSA9ICIiKQpgYGAKCiMgQ29ycmVsYXRpb25zIGFtb25nIHN1YnNjYWxlcyBieSBzaXRlCgpJZiB3ZSB3ZXJlIGZlZWxpbmcgd2Fja3ksIHdlIGNvdWxkIGFsc28gbG9vayBhdCB0aGUgY29ycmVsYXRpb25zIGJldHdlZW4gc2NhbGVzIGluIHRoZWlyIG1lYW5zIGZvciBlYWNoIHNpdGUuIFRoaXMgaXMgYSB0b3RhbGx5IHdlaXJkIHdheSB0byBsb29rIGF0IHRoaXMsIGJlY2F1c2UgdGhlcmUgYXJlIG9ubHkgNSBzaXRlcyAoaW5zdGVhZCBvZiwgZS5nLiwgMTAwIG9yIDIwMCkuIEJ1dCBqdXN0IGZvciBmdW4uLi4gCgpUbyByZWFkIHRoaXMgcGxvdCwgZmluZCBvbmUgc2NhbGUgb24gdGhlIHgtYXhpcywgYW5kIGFub3RoZXIgc2NhbGUgb24gdGhlIHktYXhpcy4gVGhlIHZhbHVlIChhbmQgY29sb3IpIGF0IHRoYXQgcG9pbnQgaW4gdGhlIGdyaWQgc2hvd3MgeW91IHRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZXNlIHR3byBzdWJzY2FsZSBtZWFucyBhY3Jvc3MgdGhlIDUgc2l0ZXMuIFRoZSBtYXhpbXVtIHBvc3NpYmxlIGNvcnJlbGF0aW9uIGlzICsxIChyZWQpLCBhbmQgdGhlIG1pbmltdW0gaXMgLTEgKGJsdWUpLgoKSSBvcmRlcmVkIHRoZSBzY2FsZXMgYWNjb3JkaW5nIHRvIHRoZSBjbHVzdGVyIGFuYWx5c2lzIHdlIGp1c3QgZGlkIGFib3ZlLCBzbyB5b3UgY2FuIHNlZSAicGF0Y2hlcyIgb2Ygc2NhbGVzIHRoYXQgYWxsIHRlbmRlZCB0byBoYXZlIHNpbWlsYXIgcGF0dGVybnMgb2YgbWVhbnMgYWNyb3NzIHNpdGVzLgoKYGBge3IsIGZpZy53aWR0aCA9IDcsIGZpZy5hc3AgPSAxfQpkX2xvbmdfc3Vic2NhbGVfYm9vdCAlPiUKICBmaWx0ZXIoIWdyZXBsKCJ0aGFpIiwgc3Vic2NhbGUpLCAhaXMubmEoc3Vic2NhbGUpKSAlPiUKICBtdXRhdGUoc3Vic2NhbGUgPSBpZmVsc2Uoc3Vic2NhbGUgPT0gImlubmVyIHNwZWVjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlKGFzLmNoYXJhY3RlcihzdWJzY2FsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzdWIoInBhY2tldCAiLCAicCIsIHBhY2tldCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcCA9ICJfIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzLmNoYXJhY3RlcihzdWJzY2FsZSkpKSAlPiUKICBkaXN0aW5jdChjdHJ5LCBzdWJzY2FsZSwgTWVhbikgJT4lCiAgdW5ncm91cCgpICU+JQogIHNwcmVhZChzdWJzY2FsZSwgTWVhbikgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIGNvbHVtbl90b19yb3duYW1lcygiY3RyeSIpICU+JQogIGNvcih1c2UgPSAicGFpcndpc2UuY29tcGxldGUub2JzIikgJT4lCiAgIyBjb3JycGxvdCB2ZXJzaW9uOgogICMgY29ycnBsb3Q6OmNvcnJwbG90KG1ldGhvZCA9ICJjb2xvciIsIHRsLmNvbCA9ICJibGFjayIsCiAgIyAgICAgICAgICAgICAgICAgICAgYWRkQ29lZi5jb2wgPSAiYmxhY2siLCBvcmRlciA9ICJoY2x1c3QiLAogICMgICAgICAgICAgICAgICAgICAgIGNvbCA9IFJDb2xvckJyZXdlcjo6YnJld2VyLnBhbChuID0gMTEsIG5hbWUgPSAiUFJHbiIpLAogICMgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIlxuY29ycmVsYXRpb25zIGJldHdlZW4gc3Vic2NhbGUgbWVhbnMgKGJ5IGNvdW50cnkpLCBvcmRlcmVkIGJ5IGhpZXJhcmNoaWNhbCBjbHVzdGVyaW5nIikKCiAgIyBnZ3Bsb3QgdmVyc2lvbjoKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJzY2FsZUEiKSAlPiUKICBtdXRhdGUoc3Vic2NhbGVBX29yZGVyID0gYXMubnVtZXJpYyhmYWN0b3IoYXMubnVtZXJpYyhmYWN0b3Ioc3Vic2NhbGVBKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGNsdXN0X3N1YnNjYWxlcyRvcmRlcikpKSAlPiUKICBnYXRoZXIoc3Vic2NhbGVCLCBjb3IsIC1zdWJzY2FsZUEsIC1zdWJzY2FsZUFfb3JkZXIpICU+JQogIG11dGF0ZShzdWJzY2FsZUJfb3JkZXIgPSBhcy5udW1lcmljKGZhY3Rvcihhcy5udW1lcmljKGZhY3RvcihzdWJzY2FsZUIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gY2x1c3Rfc3Vic2NhbGVzJG9yZGVyKSkpICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIoc3Vic2NhbGVBLCBkZXNjKHN1YnNjYWxlQV9vcmRlcikpLCAKICAgICAgICAgICAgIHkgPSByZW9yZGVyKHN1YnNjYWxlQiwgZGVzYyhzdWJzY2FsZUJfb3JkZXIpKSwgCiAgICAgICAgICAgICBmaWxsID0gY29yLCBsYWJlbCA9IHJvdW5kMihjb3IpKSkgKwogIGdlb21fdGlsZSgpICsKICBnZW9tX3RleHQoc2l6ZSA9IDMpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcihndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDUwKSwKICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICJjb3JyZWxhdGlvbnMgYW1vbmcgbWVhbiBzdWJzY2FsZSBzY29yZXMsIGJ5IHNpdGUiLAogICAgICAgc3VidGl0bGUgPSAidXNpbmcgcGFpcndpc2UgY29tcGxldGUgb2JzZXJ2YXRpb25zXG5vcmRlcmVkIHZpYSBoaWVyYXJjaGljYWwgY2x1c3RlcmluZyBhbmFseXNpcyIsCiAgICAgICBmaWxsID0gImNvcnJlbGF0aW9uXG5jb2VmZi4gKHIpIiwKICAgICAgIHggPSAiIiwKICAgICAgIHkgPSAiIikKYGBgCg==